java多线程中的sleep()、wait()、notify()和对象锁的关系

1、sleep()不释放对象锁。

2、wait()释放对象锁。

3、notify()不释放对象锁。

(1)、notify释放锁吗?不要误导别人。notifty()只是唤醒此对象监视器上等待的单个线程,直到当前线程释放此对象上的锁,才有可能继续执行被唤醒的线程。

(2)、对的!这个说法是准确的。notify只是唤醒了一个因为调用了wait而自愿阻塞的线程,它现在可以执行了,但是,能不能访问,要看该对该对象加锁的线程是否已经释放了锁(两种方式:第一该线程运行同步方法已经结束,第二该线程调用了wait方法,自愿阻塞)。

4、下面补充wait() 和 sleep() 的区别:

(1).核心区别:sleep用于线程控制,wait用于线程间的通信。
(2),wait() 执行后,释放执行权,也释放锁,与它同步的线程或者其它的线程都可以拿到执行权。
(3),sleep() 执行后,释放执行权,但不释放锁,即与它不拥有同一个锁的线程可以拿到执行权,但与它同步的线程不可以拿到执行权。

对比理解,效果更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值